home *** CD-ROM | disk | FTP | other *** search
- import java.applet.Applet;
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Event;
- import java.awt.Font;
- import java.awt.FontMetrics;
- import java.awt.Graphics;
- import java.awt.Image;
- import java.awt.Point;
- import java.awt.Rectangle;
- import java.net.URL;
- import java.util.StringTokenizer;
-
- public class XeoMenu extends Applet {
- Image image;
- Image bbuf;
- Graphics bbufG;
- boolean imageDone;
- Rectangle[] hitArea;
- Rectangle[] srcRect;
- Point[] dstPt;
- boolean[] down;
- String[] url;
- String[][] itemUrl;
- String[][] item;
- int curMenu;
- int curMenuItem;
- Rectangle[] menuItemRect;
- Color bgColor;
- Color[] fgMenuColor = new Color[2];
- Color[] bgMenuColor = new Color[2];
- int marginH;
- int marginV;
- // $FF: renamed from: f java.awt.Font
- Font field_0;
- // $FF: renamed from: fm java.awt.FontMetrics
- FontMetrics field_1;
-
- public void init() {
- this.image = ((Applet)this).getImage(((Applet)this).getCodeBase(), ((Applet)this).getParameter("image"));
- this.marginH = Integer.parseInt(((Applet)this).getParameter("marginh"));
- this.marginV = Integer.parseInt(((Applet)this).getParameter("marginv"));
- int[] var1 = this.parseInt(((Applet)this).getParameter("bg-color"), " ");
- this.bgColor = new Color(var1[0], var1[1], var1[2]);
- var1 = this.parseInt(((Applet)this).getParameter("fg-menu-color"), " ");
- this.fgMenuColor[0] = new Color(var1[0], var1[1], var1[2]);
- var1 = this.parseInt(((Applet)this).getParameter("fg-hi-menu-color"), " ");
- this.fgMenuColor[1] = new Color(var1[0], var1[1], var1[2]);
- var1 = this.parseInt(((Applet)this).getParameter("bg-menu-color"), " ");
- this.bgMenuColor[0] = new Color(var1[0], var1[1], var1[2]);
- var1 = this.parseInt(((Applet)this).getParameter("bg-hi-menu-color"), " ");
- this.bgMenuColor[1] = new Color(var1[0], var1[1], var1[2]);
- this.bbuf = ((Component)this).createImage(((Component)this).size().width, ((Component)this).size().height);
- this.bbufG = this.bbuf.getGraphics();
- int var2 = Integer.parseInt(((Applet)this).getParameter("font-height"));
-
- for(int var3 = var2; var3 > 10; --var3) {
- this.field_0 = new Font(((Applet)this).getParameter("font"), 0, var3);
- this.field_1 = ((Component)this).getFontMetrics(this.field_0);
- if (this.field_1.getHeight() <= var2) {
- break;
- }
- }
-
- int var13;
- for(var13 = 0; ((Applet)this).getParameter("menu" + var13) != null; ++var13) {
- }
-
- this.hitArea = new Rectangle[var13];
- this.srcRect = new Rectangle[var13];
- this.dstPt = new Point[var13];
- this.url = new String[var13];
- this.down = new boolean[var13];
- this.itemUrl = new String[var13][];
- this.item = new String[var13][];
-
- for(int var14 = 0; var14 < this.hitArea.length; ++var14) {
- String[] var4 = this.parse(((Applet)this).getParameter("menu" + var14), ((Applet)this).getParameter("separator"));
- var1 = this.parseInt(var4[0], " ");
- this.hitArea[var14] = new Rectangle(var1[0], var1[1], var1[2], var1[3]);
- var1 = this.parseInt(var4[1], " ");
- this.srcRect[var14] = new Rectangle(var1[0], var1[1], var1[2], var1[3]);
- var1 = this.parseInt(var4[2], " ");
- this.dstPt[var14] = new Point(var1[0], var1[1]);
- this.down[var14] = var4[3].equals("d");
- this.url[var14] = var4[4];
- this.item[var14] = new String[(var4.length - 5) / 2];
- this.itemUrl[var14] = new String[(var4.length - 5) / 2];
-
- for(int var5 = 0; var5 < this.item[var14].length; ++var5) {
- this.item[var14][var5] = var4[var5 * 2 + 5];
- this.itemUrl[var14][var5] = var4[var5 * 2 + 6];
- }
- }
-
- }
-
- String[] parse(String var1, String var2) {
- StringTokenizer var3 = new StringTokenizer(var1, var2);
- String[] var4 = new String[var3.countTokens()];
-
- for(int var5 = 0; var5 < var4.length; ++var5) {
- var4[var5] = var3.nextToken();
- }
-
- return var4;
- }
-
- int[] parseInt(String var1, String var2) {
- StringTokenizer var3 = new StringTokenizer(var1, var2);
- int[] var4 = new int[var3.countTokens()];
-
- for(int var5 = 0; var5 < var4.length; ++var5) {
- var4[var5] = Integer.parseInt(var3.nextToken());
- }
-
- return var4;
- }
-
- public void paint(Graphics var1) {
- this.imageDone = false;
- this.update(var1);
- }
-
- public void update(Graphics var1) {
- if (!this.imageDone) {
- this.imageDone = var1.drawImage(this.image, 0, 0, this);
- } else {
- this.bbufG.setColor(this.bgColor);
- this.bbufG.fillRect(0, 0, ((Component)this).size().width, ((Component)this).size().height);
- this.bbufG.drawImage(this.image, 0, 0, this);
- if (this.curMenu >= 0) {
- Graphics var2 = this.bbuf.getGraphics();
- var2.clipRect(this.dstPt[this.curMenu].x, this.dstPt[this.curMenu].y, this.srcRect[this.curMenu].width, this.srcRect[this.curMenu].height);
- var2.drawImage(this.image, this.dstPt[this.curMenu].x - this.srcRect[this.curMenu].x, this.dstPt[this.curMenu].y - this.srcRect[this.curMenu].y, this);
- var2.dispose();
- var2 = this.bbuf.getGraphics();
-
- for(int var3 = 0; var3 < this.menuItemRect.length; ++var3) {
- this.drawMenuItem(var2, var3);
- }
-
- var2.dispose();
- }
-
- var1.drawImage(this.bbuf, 0, 0, this);
- }
- }
-
- void drawMenuItem(Graphics var1, int var2) {
- String[] var4 = this.parse(this.item[this.curMenu][var2], ((Applet)this).getParameter("newline"));
- byte var5 = 0;
- if (var2 == this.curMenuItem) {
- var5 = 1;
- ((Applet)this).getAppletContext().showStatus(this.itemUrl[this.curMenu][var2]);
- }
-
- var1.setColor(this.bgMenuColor[var5]);
- var1.fillRect(this.menuItemRect[var2].x, this.menuItemRect[var2].y, this.menuItemRect[var2].width, this.menuItemRect[var2].height);
- var1.setColor(this.fgMenuColor[var5]);
- var1.drawRect(this.menuItemRect[var2].x, this.menuItemRect[var2].y, this.menuItemRect[var2].width, this.menuItemRect[var2].height);
- var1.setFont(this.field_0);
- int var3 = this.menuItemRect[var2].y + this.marginV;
-
- for(int var6 = 0; var6 < var4.length; ++var6) {
- var1.drawString(var4[var6], this.menuItemRect[var6].x + this.menuItemRect[var6].width - this.field_1.stringWidth(var4[var6]) - this.marginH, var3 + this.field_1.getAscent());
- var3 += this.field_1.getHeight();
- }
-
- }
-
- public boolean mouseExit(Event var1, int var2, int var3) {
- this.curMenuItem = this.curMenu = -1;
- ((Component)this).repaint();
- return true;
- }
-
- public boolean mouseEnter(Event var1, int var2, int var3) {
- return this.mouseMove(var1, var2, var3);
- }
-
- public boolean mouseDown(Event var1, int var2, int var3) {
- try {
- String var4 = null;
- if (this.curMenuItem >= 0 && this.itemUrl[this.curMenu].length > 0) {
- var4 = this.itemUrl[this.curMenu][this.curMenuItem];
- } else if (this.curMenu >= 0) {
- var4 = this.url[this.curMenu];
- }
-
- if (var4 != null) {
- URL var5 = new URL(((Applet)this).getDocumentBase(), var4);
- if (((Applet)this).getParameter("target") != null) {
- ((Applet)this).getAppletContext().showDocument(var5, ((Applet)this).getParameter("target"));
- } else {
- ((Applet)this).getAppletContext().showDocument(var5);
- }
- }
- } catch (Exception var6) {
- ((Throwable)var6).printStackTrace();
- }
-
- return true;
- }
-
- public boolean mouseMove(Event var1, int var2, int var3) {
- if (this.curMenu >= 0) {
- int var4 = this.inMenu(this.menuItemRect, var2, var3);
- if (this.curMenuItem != var4) {
- this.curMenuItem = var4;
- ((Component)this).repaint();
- }
-
- if (var4 >= 0) {
- return true;
- }
-
- this.curMenu = -1;
- }
-
- int var13 = this.inMenu(this.hitArea, var2, var3);
- if (var13 != this.curMenu) {
- this.curMenu = var13;
- if (var13 >= 0) {
- int var5 = 50;
- int var6 = 0;
- this.menuItemRect = new Rectangle[this.item[this.curMenu].length];
-
- for(int var7 = 0; var7 < this.menuItemRect.length; ++var7) {
- String[] var8 = this.parse(this.item[this.curMenu][var7], "^");
-
- for(int var9 = 0; var9 < var8.length; ++var9) {
- int var10 = this.field_1.stringWidth(var8[var9]);
- if (var10 > var5) {
- var5 = var10;
- }
- }
-
- this.menuItemRect[var7] = new Rectangle();
- this.menuItemRect[var7].height = this.parse(this.item[this.curMenu][var7], "^").length * this.field_1.getHeight() + 2 * this.marginV;
- var6 += this.menuItemRect[var7].height;
- }
-
- var5 += 2 * this.marginH + 1;
- if (this.down[var13]) {
- var3 = Math.max(0, Math.min(((Component)this).size().height - var6 - 1, this.dstPt[this.curMenu].y + this.srcRect[this.curMenu].height - 1));
- } else {
- var3 = Math.max(0, Math.min(((Component)this).size().height - var6 - 1, this.dstPt[this.curMenu].y - var6));
- }
-
- var2 = this.dstPt[this.curMenu].x + this.srcRect[this.curMenu].width - var5 - 1;
-
- for(int var15 = 0; var15 < this.item[this.curMenu].length; ++var15) {
- this.menuItemRect[var15].x = var2;
- this.menuItemRect[var15].y = var3;
- this.menuItemRect[var15].width = var5;
- var3 += this.menuItemRect[var15].height;
- }
-
- ((Applet)this).getAppletContext().showStatus(this.url[this.curMenu]);
- }
-
- ((Component)this).repaint();
- }
-
- return true;
- }
-
- int inMenu(Rectangle[] var1, int var2, int var3) {
- if (var1 != null) {
- for(int var4 = 0; var4 < var1.length; ++var4) {
- if (var1[var4].inside(var2, var3)) {
- return var4;
- }
- }
- }
-
- return -1;
- }
- }
-